package com.kosam.leetcode.tag.sort;

import java.util.Arrays;

/**
 * 给定一个会议时间安排的数组，每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],...] (si < ei)，请你判断一个人是否能够参加这里面的全部会议。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/meeting-rooms
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class LeetCode252_MeetRooms {

    /**
     * 思路:
     * 1. 先将会议按开始时间排序
     * 2. 遍历比较，如果前一个会议的结束时间 大于 后一个会议的开始时间, 那么就返回 false
     * @param intervals
     * @return
     */
    private static boolean canAttendMeetings(int[][] intervals) {
        // 按开始时间排序
        Arrays.sort(intervals, ((o1, o2) -> o1[0] - o2[0]));
//        Arrays.sort(intervals, new Comparator<int[]>() {
//            @Override
//            public int compare(int[] o1, int[] o2) {
//                return o1[0] - o2[0];
//            }
//        });
        // 判断前一个会议的结束时间是否 小于 后一个会议的开始时间
        for (int i = 0; i < intervals.length - 1; i++) {
            if (intervals[i][1] > intervals[i + 1][0]){
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        int[][] intervals = new int[][]{{0, 30}, {5, 10}, {15, 20}};
        int[][] intervals2 = new int[][]{{7, 10}, {2, 4}};
        System.out.println(canAttendMeetings(intervals2));

    }
}
